410. Split Array Largest Sum
题目 410. Split Array Largest Sum
思路分析
代码实现
class Solution {
private boolean check(int mid,int[] nums,int k){
int cnt=1;
int cursum=0;
for(int num:nums){
if(cursum+num>mid){
cnt++;
cursum=num;
}else{
cursum+=num;
}
}
return cnt<=k;
}
public int splitArray(int[] nums, int k) {
int maxv=0,sumv=0;
for(int num:nums){
maxv = Math.max(num,maxv);
sumv += num;
}
int l=maxv,r=sumv;
while(l<r){
int mid=l+r>>1;
if(check(mid,nums,k)){
r=mid;
}else{
l=mid+1;
}
}
return r;
}
}
💬 评论